
    var Factory=
    {
        /**
         * Construct an instance of a constructor, optionally supplying
         * any number of arguments.
         * 
         * @param {Function} Constructor    The constructor to instantiate.
         * @return {Object}
         */
        newInstance: function (Constructor) 
        {
            if (0 === Constructor.length)
                return new Constructor;
            
            var presetArguments= [].slice.call(arguments, 1);
            
            Proxy.inherits(Constructor);
            Proxy.prototype.constructor= Constructor;
            function Proxy () 
            {
                Constructor.apply(this, presetArguments);
            };
            
            return new Proxy;
        }
    };
    
    Credentials.implement
    (
        {
            /**
             * @type {String}
             */
            username: null
            
            /**
             * @type {String}
             */
        ,   password: null
        }
    );
    
    /**
     * 
     * @param {String} username
     * @param {String} password
     * @constructor
     */
    function Credentials (username, password) 
    {
        this.username= username;
        this.password= password;
    };
    
    
    var instance= Factory.newInstance(Credentials, 'ihascheezburgerz', 'qwerty');
    
    alert(instance instanceof Credentials); // true
    alert(Credentials.type(instance))// true- same thing
    alert(Credentials.is(instance))// true- we lied about the constructor
